/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dblayer;
import Modellayer.*;
import java.sql.*;
/**
 *
 * @author Søren
 */
public class DBMedarbejder implements IFDBMedarbejder {

    private Connection con;
    public DBMedarbejder()
    {
	con = DBConnection.getInstance().getDBcon();
    }

    public Medarbejder findMedarbejder(int medarbejderNr) {
        String wClause = "  medNr = '" + medarbejderNr + "'";
        return singleWhere(wClause);
    }

    public int opretMedarbejder(Medarbejder medarbejder) {
    int rc = -1;
    String query="INSERT INTO semMedarbejder(medNr, fornavn, efternavn, cpr, adresse, tlf)  VALUES('"+
	  		medarbejder.getMedNr()  + "','"  +
			medarbejder.getFornavn() + "','" +
			medarbejder.getEfternavn() + "','" +
                        medarbejder.getCpr() + "','" +
                        medarbejder.getAdresse() + "','" +
			medarbejder.getTlf() + "')";

      System.out.println("insert : " + query);
      try{ // insert new customer
            Statement stmt = con.createStatement();
	 	  	stmt.setQueryTimeout(5);
	 	  	rc = stmt.executeUpdate(query);
	 	  	stmt.close();
		}//end try
	 	catch(Exception ex){
	 	  	System.out.println("Insert exception in semVare db: "+ex);
	   }
	   return(rc);
	}

	public void sletMedarbejder(int medNr)
	{
               int rc=-1;

	  	String query="DELETE FROM semMedarbejder WHERE medNr = '" +
				medNr + "'";
                System.out.println(query);
	  	try{ // delete from customer
	 		Statement stmt = con.createStatement();
	 		stmt.setQueryTimeout(5);
	 	  	rc = stmt.executeUpdate(query);
	 	  	stmt.close();
  		}//slut try
   	        catch(Exception ex){
	 	  	System.out.println("Delete exception in semVare db: "+ex);
   	        }
    }

    public int redigerMedarbejder(Medarbejder medarbejder) {
       Medarbejder medarbejderObj  = medarbejder;
		int rc=-1;

		String query="UPDATE semMedarbejder SET "+
                        "fornavn ='" + medarbejderObj.getFornavn() + "', " +
                        "efternavn ='" + medarbejderObj.getEfternavn() + "', " +
                        "cpr ='" + medarbejderObj.getCpr() + "', " +
                        "adresse ='" + medarbejderObj.getAdresse() + "', " +
                        "tlf ='" + medarbejderObj.getTlf() + "' " +
		        " WHERE medNr = '"+ medarbejderObj.getMedNr() + "'";

                System.out.println("Update query:" + query);
  		try{ // update vare
	 		Statement stmt = con.createStatement();
	 		stmt.setQueryTimeout(5);
	 	 	rc = stmt.executeUpdate(query);

	 	 	stmt.close();
		}//end try
	 	catch(Exception ex){
	 	 	System.out.println("Update exception in vare db: "+ex);
	  	}
		return(rc);
    }


    //Singelwhere is used when we only select one vare
    private Medarbejder singleWhere(String wClause)
    {
           ResultSet results;
           Medarbejder medarbejderObj = new Medarbejder();

	   String query =  buildQuery(wClause);
           System.out.println(query);
		try{ // read the persiVare from the database
	 		Statement stmt = con.createStatement();
	 		stmt.setQueryTimeout(5);
	 		results = stmt.executeQuery(query);

	 		if( results.next() ){
                            medarbejderObj = buildMedarbejder(results);
                            //assocaition is to be build
                            stmt.close();

			}
                        else{ //no vare was found
                            medarbejderObj = null;
                        }
		}//end try
	 	catch(Exception e){
	 		System.out.println("Query exception: "+e);
	 	}
		return medarbejderObj;
	}
	//method to build the query
	private String buildQuery(String wClause)
	{
	    String query="SELECT medNr, fornavn, efternavn, cpr, adresse, tlf FROM semMedarbejder";

		if (wClause.length()>0)
			query=query+" WHERE "+ wClause;

		return query;
	}

	private Medarbejder buildMedarbejder(ResultSet results)
        {
            Medarbejder medarbejderObj = new Medarbejder();
            try{ // the columns from the table persiCustomer are used
                medarbejderObj.setMedNr(results.getInt("medNr"));
                medarbejderObj.setFornavn(results.getString("fornavn"));
                medarbejderObj.setEfternavn(results.getString("efternavn"));
                medarbejderObj.setCpr(results.getInt("cpr"));
		medarbejderObj.setAdresse((results.getString("adresse")));
                medarbejderObj.setTlf(results.getInt("tlf"));
          }
         catch(Exception e)
         {
             System.out.println("error in building the Vare object");
         }
         return medarbejderObj;
      }

}
